home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2002 #11 / Amiga Plus CD - 2002 - No. 11.iso / Tools / Development / libogg / libvorbis-1.0rc3 / lib / modes / psych_44.h < prev    next >
Encoding:
C/C++ Source or Header  |  2002-10-27  |  26.8 KB  |  648 lines

  1. /********************************************************************
  2.  *                                                                  *
  3.  * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
  4.  * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
  5.  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  6.  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  7.  *                                                                  *
  8.  * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001             *
  9.  * by the XIPHOPHORUS Company http://www.xiph.org/                  *
  10.  *                                                                  *
  11.  ********************************************************************
  12.  
  13.  function: key psychoacoustic settings for 44.1/48kHz
  14.  last mod: $Id: psych_44.h,v 1.7 2001/12/22 09:40:40 xiphmont Exp $
  15.  
  16.  ********************************************************************/
  17.  
  18.  
  19. /* preecho trigger settings *****************************************/
  20.  
  21. static vorbis_info_psy_global _psy_global_44[3]={
  22.  
  23.   {8,   /* lines per eighth octave */
  24.    /*{990.f,990.f,990.f,990.f}, {-990.f,-990.f,-990.f,-990.f}, -90.f,
  25.    {0.f,0.f,0.f,0.f}, {-0.f,-0.f,-0.f,-0.f}, -90.f,*/
  26.    {30.f,30.f,30.f,34.f}, {-990.f,-990.f,-990.f,-990.f}, -90.f,
  27.    -6.f, 0,
  28.   },
  29.   {8,   /* lines per eighth octave */
  30.    /*{990.f,990.f,990.f,990.f}, {-990.f,-990.f,-990.f,-990.f}, -90.f,*/
  31.    {26.f,26.f,26.f,30.f}, {-90.f,-90.f,-90.f,-90.f}, -90.f,
  32.    -6.f, 0,
  33.   },
  34.   {8,   /* lines per eighth octave */
  35.    {26.f,26.f,26.f,30.f}, {-26.f,-26.f,-26.f,-30.f}, -90.f,
  36.    -6.f, 0,
  37.   }
  38. };
  39.  
  40. /* noise compander lookups * low, mid, high quality ****************/
  41.  
  42. static float _psy_compand_44_short[3][NOISE_COMPAND_LEVELS]={
  43.   /* sub-mode Z */
  44.   {
  45.     0.f, 1.f, 2.f, 3.f, 4.f, 5.f, 6.f,  7.f,     /* 7dB */
  46.     8.f, 9.f,10.f,11.f,12.f,13.f,14.f, 15.f,     /* 15dB */
  47.     16.f,17.f,18.f,19.f,20.f,21.f,22.f, 23.f,     /* 23dB */
  48.     24.f,25.f,26.f,27.f,28.f,29.f,30.f, 31.f,     /* 31dB */
  49.     32.f,33.f,34.f,35.f,36.f,37.f,38.f, 39.f,     /* 39dB */
  50.   },
  51.   /* mode_Z nominal */
  52.   {
  53.      0.f, 1.f, 2.f, 3.f, 4.f, 5.f, 6.f,  6.f,     /* 7dB */
  54.      7.f, 7.f, 7.f, 7.f, 6.f, 6.f, 6.f,  7.f,     /* 15dB */
  55.      7.f, 8.f, 9.f,10.f,11.f,12.f,13.f, 14.f,     /* 23dB */
  56.     15.f,16.f,17.f,17.f,17.f,18.f,18.f, 19.f,     /* 31dB */
  57.     19.f,19.f,20.f,21.f,22.f,23.f,24.f, 25.f,     /* 39dB */
  58.   },
  59.   /* mode A */
  60.   {
  61.     0.f, 1.f, 2.f, 3.f, 4.f, 5.f, 5.f,  5.f,     /* 7dB */
  62.     6.f, 6.f, 6.f, 5.f, 4.f, 4.f, 4.f,  4.f,     /* 15dB */
  63.     4.f, 4.f, 5.f, 5.f, 5.f, 6.f, 6.f,  6.f,     /* 23dB */
  64.     7.f, 7.f, 7.f, 8.f, 8.f, 8.f, 9.f, 10.f,     /* 31dB */
  65.     11.f,12.f,13.f,14.f,15.f,16.f,17.f, 18.f,     /* 39dB */
  66.   }
  67. };
  68.  
  69. static float _psy_compand_44[3][NOISE_COMPAND_LEVELS]={
  70.   /* sub-mode Z */
  71.   {
  72.      0.f, 1.f, 2.f, 3.f, 4.f, 5.f, 6.f,  7.f,     /* 7dB */
  73.      8.f, 9.f,10.f,11.f,12.f,13.f,14.f, 15.f,     /* 15dB */
  74.     16.f,17.f,18.f,19.f,20.f,21.f,22.f, 23.f,     /* 23dB */
  75.     24.f,25.f,26.f,27.f,28.f,29.f,30.f, 31.f,     /* 31dB */
  76.     32.f,33.f,34.f,35.f,36.f,37.f,38.f, 39.f,     /* 39dB */
  77.   },
  78.   /* mode_Z nominal */
  79.   {
  80.     0.f, 1.f, 2.f, 3.f, 4.f, 5.f, 6.f,  7.f,     /* 7dB */
  81.     8.f, 9.f,10.f,11.f,12.f,12.f,13.f, 13.f,     /* 15dB */
  82.     13.f,14.f,14.f,14.f,15.f,15.f,15.f, 15.f,     /* 23dB */
  83.     16.f,16.f,17.f,17.f,17.f,18.f,18.f, 19.f,     /* 31dB */
  84.     19.f,19.f,20.f,21.f,22.f,23.f,24.f, 25.f,     /* 39dB */
  85.   },
  86.   /* mode A */
  87.   {
  88.     0.f, 1.f, 2.f, 3.f, 4.f, 5.f, 6.f,  7.f,     /* 7dB */
  89.     8.f, 8.f, 7.f, 6.f, 5.f, 4.f, 4.f,  4.f,     /* 15dB */
  90.     4.f, 4.f, 5.f, 5.f, 5.f, 6.f, 6.f,  6.f,     /* 23dB */
  91.     7.f, 7.f, 7.f, 8.f, 8.f, 8.f, 9.f, 10.f,     /* 31dB */
  92.     11.f,12.f,13.f,14.f,15.f,16.f,17.f, 18.f,     /* 39dB */
  93.   }
  94. };
  95.  
  96. /* tonal masking curve level adjustments *************************/
  97. static vp_adjblock _vp_tonemask_adj_longblock[6]={
  98.   /* adjust for mode zero */
  99.   {{
  100.     { 10, 10,  5,                               }, /*63*/
  101.     { 10, 10,  5,                               }, 
  102.     { 10, 10,  5,                               }, /* 125 */
  103.     { 10, 10,  5,                               }, 
  104.     { 10, 10,  5,                               }, /* 250 */
  105.     { 10, 10,  5,                               }, 
  106.     { 10, 10,  5,                               }, /* 500 */
  107.     { 10, 10,  5,                               }, 
  108.     { 10, 10,  5,                               }, /* 1000 */
  109.     { 10, 10,  5,                               }, 
  110.  
  111.     { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, /* 2000 */
  112.     { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
  113.     { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, /* 4000 */
  114.     { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
  115.     { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, /* 8000 */
  116.     { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, 
  117.     { 16, 16, 14, 12, 12, 15, 15, 15, 15, 15, 10}, /* 16000 */
  118.   }},
  119.  
  120.   /* adjust for mode two */
  121.   {{
  122.     { 10, 10,  5,                               }, /*63*/
  123.     { 10, 10,  5,                               }, 
  124.     { 10, 10,  5,                               }, /* 125 */
  125.     { 10, 10,  5,                               }, 
  126.     { 10, 10,  5,                               }, /* 250 */
  127.     { 10, 10,  5,                               }, 
  128.     { 10, 10,  5,                               }, /* 500 */
  129.     { 10, 10,  5,                               }, 
  130.     { 10, 10,  5,                               }, /* 1000 */
  131.     { 10, 10,  5,                               }, 
  132.  
  133.     {  0,                                       }, /* 2000 */
  134.     {  0,                                       },
  135.     { 10,  5,  5,                               }, /* 4000 */
  136.     { 10, 10,  5,                               },
  137.     { 10, 10,  7,  5,                           }, /* 8000 */
  138.     { 10, 10,  7,  7,  5,  5, 10, 10, 10,  5,   }, 
  139.     { 16, 16, 14,  8,  8,  8, 10, 10, 10,  5,   }, /* 16000 */
  140.   }},
  141.  
  142.   /* adjust for mode four */
  143.   {{
  144.     { 10,  5,  5,                               }, /*63*/
  145.     { 10,  5,  5,                               }, 
  146.     { 10,  5,  5,                               }, /* 125 */
  147.     { 10,  5,  5,                               }, 
  148.     { 10,  5,  5,                               }, /* 250 */
  149.     { 10,  5,  5,                               }, 
  150.     { 10,  5,  5,                               }, /* 500 */
  151.     { 10,  5,  5,                               }, 
  152.     { 10,  5,  5,                               }, /* 1000 */
  153.     { 10,  5,  5,                               }, 
  154.  
  155.     {  0,                                       }, /* 2000 */
  156.     {  0,                                       },
  157.     {  0,                                       }, /* 4000 */
  158.     { 10,  5,  5,                               },
  159.     { 10, 10,  7,  5,                           }, /* 8000 */
  160.     { 10, 10,  7,  5,  5,  5, 10, 10, 10,  5,   }, 
  161.     { 16, 16, 14,  8,  8,  8, 10, 10, 10,  5,   }, /* 16000 */
  162.   }},
  163.  
  164.   /* adjust for mode six */
  165.   {{
  166.     { 10,  5,  5,                               }, /*63*/
  167.     { 10,  5,  5,                               }, 
  168.     { 10,  5,  5,                               }, /* 125 */
  169.     { 10,  5,  5,                               }, 
  170.     { 10,  5,  5,                               }, /* 250 */
  171.     { 10,  5,  5,                               }, 
  172.     { 10,  5,  5,                               }, /* 500 */
  173.     { 10,  5,  5,                               }, 
  174.     { 10,  5,  5,                               }, /* 1000 */
  175.     { 10,  5,  5,                               }, 
  176.  
  177.     {  0,                                       }, /* 2000 */
  178.     {  0,                                       },
  179.     {  0,                                       }, /* 4000 */
  180.     { 10,  5,  5,                               },
  181.     { 10, 10,  7,  5,                           }, /* 8000 */
  182.     { 10, 10,  7,  5,  5,  5,  5,  5,  5,       }, 
  183.     { 12, 10, 10,  5,  5,  5,  5,  5,  5,       }, /* 16000 */
  184.   }},
  185.  
  186.   /* adjust for mode eight */
  187.   {{
  188.     {  0,                                       }, /*63*/
  189.     {  0,                                       }, 
  190.     {  0,                                       }, /* 125 */
  191.     {  0,                                       }, 
  192.     {  0,                                       }, /* 250 */
  193.     {  0,                                       }, 
  194.     {  0,                                       }, /* 500 */
  195.     {  0,                                       }, 
  196.     {  0,                                       }, /* 1000 */
  197.     {  0,                                       }, 
  198.  
  199.     {  0,                                       }, /* 2000 */
  200.     {  0,                                       },
  201.     {  0,                                       }, /* 4000 */
  202.     {  0,                                       },
  203.     {  0,                                       }, /* 8000 */
  204.     {  0,                                       }, 
  205.     {  5,  5,  5,  5,  5,  5,  5,               }, /* 16000 */
  206.   }},
  207.  
  208.   /* adjust for mode ten */
  209.   {{
  210.     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, /*63*/
  211.     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, 
  212.     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, /*125*/
  213.     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, 
  214.     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, /*250*/
  215.     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15},
  216.     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, /*500*/
  217.     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, 
  218.     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, /*1000*/
  219.     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, 
  220.     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, /*2000*/
  221.     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, 
  222.     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, /*4000*/
  223.     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, 
  224.     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, /*8000*/
  225.     {  0,  0,  0, -5,-10,-10,-10,-15,-15,-15,-15}, 
  226.     {  0,  0,  0,  0,  0, -5, -5,-10,-15,-15,-15}, /*16000*/
  227.   }},
  228. };
  229.  
  230. static vp_adjblock _vp_tonemask_adj_otherblock[6]={
  231.   /* adjust for mode zero */
  232.   {{
  233.     {  0,  0,  0,  0,-10,-10,-10,-10,-10,-10,-10}, /*63*/
  234.     {  0,  0,  0,  0,-10,-10,-10,-10,-10,-10,-10}, 
  235.     {  0,  0,  0,  0,-10,-10,-10,-10,-10,-10,-10}, /*125*/
  236.     {  0,  0,  0,  0,-10,-10,-10,-10,-10,-10,-10}, 
  237.     {  0,  0,  0,  0,-10,-10,-10,-10,-10,-10,-10}, /*250*/
  238.     {  0,  0,  0,  0,-10,-10,-10,-10,-10,-10,-10}, 
  239.     {  5,  5,  5,  0, -5, -5, -5, -5, -5, -5, -5}, /*500*/
  240.     {  5,  5,  5,  0, -5, -5, -5, -5, -5, -5, -5},
  241.  
  242.     {  5,  5,  5,                               }, /*1000*/
  243.     {  5,  5,  5,                               }, 
  244.  
  245.     { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, /*2000*/
  246.     { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, 
  247.     { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, /*4000*/
  248.     { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, 
  249.     { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, /*8000*/
  250.     { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, 
  251.     { 16, 16, 14, 12, 12, 15, 15, 15, 15, 15, 10}, /*16000*/
  252.   }},
  253.  
  254.   /* adjust for mode two */
  255.   {{
  256.     {  0,  0,  0,  0,-10,-10,-10,-10,-10,-10,-10}, /*63*/
  257.     {  0,  0,  0,  0,-10,-10,-10,-10,-10,-10,-10}, 
  258.     {  0,  0,  0,  0,-10,-10,-10,-10,-10,-10,-10}, /*125*/
  259.     {  0,  0,  0,  0,-10,-10,-10,-10,-10,-10,-10}, 
  260.     {  0,  0,  0,  0,-10,-10,-10,-10,-10,-10,-10}, /*250*/
  261.     {  0,  0,  0,  0,-10,-10,-10,-10,-10,-10,-10}, 
  262.     {  5,  5,  5,  0, -5, -5, -5, -5, -5, -5, -5}, /*500*/
  263.     {  5,  5,  5,  0, -5, -5, -5, -5, -5, -5, -5},
  264.  
  265.     { 10, 10,  5,                               }, /* 1000 */
  266.     { 10, 10,  5,                               }, 
  267.  
  268.     {  0,                                       }, /* 2000 */
  269.     {  0,                                       },
  270.     {  0,                                       }, /* 4000 */
  271.     { 10,  5,  5,                               },
  272.     { 10, 10,  7,  5,                           }, /* 8000 */
  273.     { 10, 10,  7,  7,  5,  5, 10, 10, 10,  5,   }, 
  274.     { 16, 16, 14,  8,  8,  8, 10, 10, 10,  5,   }, /* 16000 */
  275.   }},
  276.  
  277.   /* adjust for mode four */
  278.   {{
  279.     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, /*63*/
  280.     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, 
  281.     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, /*125*/
  282.     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, 
  283.     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, /*250*/
  284.     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, 
  285.     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, /*500*/
  286.     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, 
  287.  
  288.     {  5,  5,  5,                               }, /* 1000 */
  289.     {  5,  5,  5,                               }, 
  290.  
  291.     {  0,                                       }, /* 2000 */
  292.     {  0,                                       },
  293.     {  0,                                       }, /* 4000 */
  294.     { 10,  5,  5,                               },
  295.     { 10, 10,  7,  5,                           }, /* 8000 */
  296.     { 10, 10,  7,  5,  5,  5, 10, 10, 10,  5,   }, 
  297.     { 16, 16, 14,  8,  8,  8, 10, 10, 10,  5,   }, /* 16000 */
  298.   }},
  299.  
  300.   /* adjust for mode six */
  301.   {{
  302.     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, /*63*/
  303.     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, 
  304.     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, /*125*/
  305.     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, 
  306.     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, /*250*/
  307.     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, 
  308.     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, /*500*/
  309.     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, 
  310.  
  311.     {  5,  5,  5,                               }, /* 1000 */
  312.     {  5,  5,  5,                               }, 
  313.  
  314.     {  0,                                       }, /* 2000 */
  315.     {  0,                                       },
  316.     {  0,                                       }, /* 4000 */
  317.     { 10,  5,  5,                               },
  318.     { 10, 10,  7,  5,                           }, /* 8000 */
  319.     { 10, 10,  7,  5,  5,  5,  5,  5,  5,       }, 
  320.     { 12, 10, 10,  5,  5,  5,  5,  5,  5,       }, /* 16000 */
  321.   }},
  322.  
  323.   /* adjust for mode eight */
  324.   {{
  325.     {-10,-10,-10,-15,-15,-15,-15,-20,-20,-20,-20}, /*63*/
  326.     {-10,-10,-10,-15,-15,-15,-15,-20,-20,-20,-20}, 
  327.     {-10,-10,-10,-15,-15,-15,-15,-20,-20,-20,-20}, /*125*/
  328.     {-10,-10,-10,-15,-15,-15,-15,-20,-20,-20,-20}, 
  329.     {-10,-10,-10,-15,-15,-15,-15,-20,-20,-20,-20}, /*250*/
  330.     {-10,-10,-10,-15,-15,-15,-15,-20,-20,-20,-20}, 
  331.     {-10,-10,-10,-15,-15,-15,-15,-20,-20,-20,-20}, /*500*/
  332.     {-10,-10,-10,-15,-15,-15,-15,-20,-20,-20,-20}, 
  333.  
  334.     {  0,-10,-10,-15,-15,-15,-15,-15,-15,-15,-15}, 
  335.     {  0,-10,-10,-15,-15,-15,-15,-15,-15,-15,-15}, 
  336.  
  337.     {  0,                                       }, /* 2000 */
  338.     {  0,                                       },
  339.     {  0,                                       }, /* 4000 */
  340.     {  0,                                       },
  341.     {  0,                                       }, /* 8000 */
  342.     {  0,                                       }, 
  343.     {  5,  5,  5,  5,  5,  5,  5,               }, /* 16000 */
  344.   }},
  345.  
  346.   /* adjust for mode ten */
  347.   {{
  348.     {  0,  0,  0, -5,-15,-20,-20,-20,-20,-20,-20}, /*63*/
  349.     {  0,  0,  0, -5,-15,-20,-20,-20,-20,-20,-20}, 
  350.     {  0,  0,  0, -5,-15,-20,-20,-20,-20,-20,-20}, /*125*/
  351.     {  0,  0,  0, -5,-15,-20,-20,-20,-20,-20,-20}, 
  352.     {  0,  0,  0, -5,-15,-20,-20,-20,-20,-20,-20}, /*250*/
  353.     {  0,  0,  0, -5,-15,-20,-20,-20,-20,-20,-20},
  354.     {  0,  0,  0, -5,-15,-20,-20,-20,-20,-20,-20}, /*500*/
  355.     {  0,  0,  0, -5,-15,-20,-20,-20,-20,-20,-20}, 
  356.     {  0,  0,  0, -5,-15,-20,-20,-20,-20,-20,-20}, /*1000*/
  357.     {  0,  0,  0, -5,-15,-20,-20,-20,-20,-20,-20}, 
  358.     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, /*2000*/
  359.     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, 
  360.     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, /*4000*/
  361.     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, 
  362.     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, /*8000*/
  363.     {  0,  0,  0, -5,-10,-10,-10,-15,-15,-15,-15}, 
  364.     {  0,  0,  0,  0,  0, -5, -5,-10,-15,-15,-15}, /*16000*/
  365.   }},
  366. };
  367.  
  368. static vp_adjblock _vp_peakguard[6]={
  369.   /* zero */
  370.   {{
  371.     {-14,-16,-18,-19,-24,-24,-24,-24,-24,-24,-24},/*63*/
  372.     {-14,-16,-18,-19,-24,-24,-24,-24,-24,-24,-24},
  373.     {-14,-16,-18,-19,-24,-24,-24,-24,-24,-24,-24},/*125*/
  374.     {-14,-16,-18,-19,-24,-24,-24,-24,-24,-24,-24},
  375.     {-14,-16,-18,-19,-24,-24,-24,-24,-24,-24,-24},/*250*/
  376.     {-14,-16,-18,-19,-24,-24,-24,-24,-24,-24,-24},
  377.     {-10,-10,-10,-10,-16,-16,-18,-20,-22,-24,-24},/*500*/
  378.     {-10,-10,-10,-10,-14,-14,-16,-20,-22,-24,-24},
  379.     {-10,-10,-10,-10,-14,-14,-16,-20,-22,-24,-24},/*1000*/
  380.     {-10,-10,-10,-10,-14,-14,-16,-20,-22,-24,-24},
  381.     {-10,-10,-10,-10,-14,-14,-16,-20,-22,-24,-24},/*2000*/
  382.     {-10,-10,-10,-12,-16,-16,-16,-20,-22,-24,-24},
  383.     {-10,-10,-10,-12,-16,-16,-16,-20,-22,-24,-24},/*4000*/
  384.     {-10,-10,-10,-12,-12,-14,-16,-18,-22,-24,-24},
  385.     {-10,-10,-10,-10,-10,-14,-16,-18,-22,-24,-24},/*8000*/
  386.     {-10,-10,-10,-10,-10,-14,-16,-18,-22,-24,-24},
  387.     {-10,-10,-10,-10,-10,-12,-16,-18,-22,-24,-24},/*16000*/
  388.   }},
  389.   /* two */
  390.   {{
  391.     {-14,-20,-20,-20,-26,-30,-30,-30,-30,-30,-30},/*63*/
  392.     {-14,-20,-20,-20,-26,-30,-30,-30,-30,-30,-30},
  393.     {-14,-20,-20,-20,-26,-30,-30,-30,-30,-30,-30},/*125*/
  394.     {-14,-20,-20,-20,-26,-30,-30,-30,-30,-30,-30},
  395.     {-14,-20,-20,-20,-26,-30,-30,-30,-30,-30,-30},/*250*/
  396.     {-14,-20,-20,-20,-26,-30,-30,-30,-30,-30,-30},
  397.     {-14,-20,-20,-20,-26,-30,-30,-30,-30,-30,-30},/*500*/
  398.     {-10,-10,-10,-10,-14,-14,-14,-20,-26,-30,-30},
  399.     {-10,-10,-10,-10,-14,-14,-14,-20,-22,-30,-30},/*1000*/
  400.     {-10,-10,-10,-10,-14,-14,-16,-20,-22,-30,-30},
  401.     {-10,-10,-10,-10,-14,-14,-16,-20,-22,-30,-30},/*2000*/
  402.     {-10,-10,-10,-10,-14,-14,-16,-20,-22,-30,-30},
  403.     {-10,-10,-10,-10,-14,-14,-16,-20,-22,-30,-30},/*4000*/
  404.     {-10,-10,-10,-10,-10,-11,-12,-13,-22,-30,-30},
  405.     {-10,-10,-10,-10,-10,-11,-12,-13,-22,-30,-30},/*8000*/
  406.     {-10,-10,-10,-10,-10,-10,-10,-11,-22,-30,-30},
  407.     {-10,-10,-10,-10,-10,-10,-10,-10,-20,-30,-30},/*16000*/
  408.   }},
  409.   /* four */
  410.   {{
  411.     {-14,-20,-20,-20,-26,-32,-32,-32,-32,-32,-40},/*63*/
  412.     {-14,-20,-20,-20,-26,-32,-32,-32,-32,-32,-40},
  413.     {-14,-20,-20,-20,-26,-32,-32,-32,-32,-32,-40},/*125*/
  414.     {-14,-20,-20,-20,-20,-20,-20,-30,-32,-32,-40},
  415.     {-14,-20,-20,-20,-20,-20,-20,-30,-32,-32,-40},/*250*/
  416.     {-14,-20,-20,-20,-20,-20,-20,-24,-32,-32,-40},
  417.     {-14,-20,-20,-20,-20,-20,-20,-24,-32,-32,-40},/*500*/
  418.     {-10,-10,-10,-10,-14,-16,-20,-24,-26,-32,-40},
  419.     {-10,-10,-10,-10,-14,-16,-20,-24,-22,-32,-40},/*1000*/
  420.     {-10,-10,-10,-10,-14,-16,-20,-24,-22,-32,-40},
  421.     {-10,-10,-10,-10,-14,-16,-20,-24,-22,-32,-40},/*2000*/
  422.     {-10,-10,-10,-10,-14,-16,-20,-24,-22,-32,-40},
  423.     {-10,-10,-10,-10,-14,-14,-16,-20,-22,-32,-40},/*4000*/
  424.     {-10,-10,-10,-10,-10,-11,-12,-13,-22,-32,-40},
  425.     {-10,-10,-10,-10,-10,-11,-12,-13,-22,-32,-40},/*8000*/
  426.     {-10,-10,-10,-10,-10,-10,-10,-11,-22,-32,-40},
  427.     {-10,-10,-10,-10,-10,-10,-10,-10,-20,-32,-40},/*16000*/
  428.   }},
  429.   /* six */
  430.   {{
  431.     {-14,-20,-20,-20,-26,-32,-32,-32,-32,-32,-40},/*63*/
  432.     {-14,-20,-20,-20,-26,-32,-32,-32,-32,-32,-40},
  433.     {-14,-20,-20,-20,-26,-32,-32,-32,-32,-32,-40},/*125*/
  434.     {-14,-20,-20,-20,-26,-32,-32,-32,-32,-32,-40},
  435.     {-14,-20,-20,-20,-26,-32,-32,-32,-32,-32,-40},/*250*/
  436.     {-14,-20,-20,-20,-26,-32,-32,-32,-32,-32,-40},
  437.     {-14,-20,-20,-20,-26,-32,-32,-32,-32,-32,-40},/*500*/
  438.     {-14,-14,-14,-16,-20,-22,-24,-24,-28,-32,-40},
  439.     {-14,-14,-14,-16,-20,-22,-24,-24,-28,-32,-40},/*1000*/
  440.     {-14,-14,-14,-16,-20,-22,-24,-24,-28,-32,-40},
  441.     {-14,-14,-16,-20,-24,-26,-26,-28,-30,-32,-40},/*2000*/
  442.     {-14,-14,-16,-20,-24,-26,-26,-28,-30,-32,-40},
  443.     {-14,-14,-16,-20,-24,-26,-26,-28,-30,-32,-40},/*4000*/
  444.     {-14,-14,-14,-20,-22,-22,-24,-24,-26,-32,-40},
  445.     {-14,-14,-14,-18,-20,-20,-24,-24,-24,-32,-40},/*8000*/
  446.     {-14,-14,-14,-18,-20,-20,-24,-24,-24,-32,-40},
  447.     {-14,-14,-14,-18,-20,-20,-22,-24,-24,-32,-40},/*16000*/
  448.   }},
  449.   /* eight */
  450.   {{
  451.     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*63*/
  452.     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*88*/
  453.     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*125*/
  454.     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*170*/
  455.     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*250*/
  456.     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*350*/
  457.     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*500*/
  458.     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*700*/
  459.     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*1000*/
  460.     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*1400*/
  461.     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*2000*/
  462.     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*2800*/
  463.     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*4000*/
  464.     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*5600*/
  465.     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*8000*/
  466.     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*11500*/
  467.     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*16600*/
  468.   }},
  469.   /* ten */
  470.   {{
  471.     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*63*/
  472.     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*88*/
  473.     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*125*/
  474.     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*170*/
  475.     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*250*/
  476.     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*350*/
  477.     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*500*/
  478.     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*700*/
  479.     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*1000*/
  480.     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*1400*/
  481.     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*2000*/
  482.     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*2800*/
  483.     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*4000*/
  484.     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*5600*/
  485.     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*8000*/
  486.     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*11500*/
  487.     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*16600*/
  488.   }}
  489. };
  490.  
  491. static int _psy_noisebias_long[11][17]={
  492.   /*63     125     250     500      1k       2k      4k      8k     16k*/
  493.   {-20,-20,-18,-18,-18,-16,-14, -8, -6, -2,  0,  2,  3,  3,  4,  4, 10},
  494.   {-20,-20,-20,-20,-20,-20,-20,-10, -6, -2, -2, -2,  1,  1,  2,  2,  4},
  495.   {-20,-20,-20,-20,-20,-20,-20,-10, -6, -2, -3, -3, -1, -1,  0,  1,  2},
  496.   {-20,-20,-20,-20,-20,-20,-20,-10, -6, -2, -3, -3, -1, -1,  0,  1,  2},
  497.   {-20,-20,-20,-20,-20,-20,-20,-10, -6, -3, -4, -4, -2, -1,  0,  0,  2},
  498.  
  499.   {-20,-20,-20,-20,-20,-20,-20,-18,-10, -4, -6, -6, -3, -2, -2, -2,  0},
  500.   {-24,-24,-24,-24,-24,-24,-24,-18,-14, -8, -8, -8, -7, -7, -6, -6, -4},
  501.   {-24,-24,-24,-24,-24,-24,-24,-18,-14,-14,-16,-16,-14,-12,-10,-10, -8},
  502.  
  503.   {-24,-24,-24,-24,-24,-24,-24,-20,-20,-20,-20,-20,-16,-16,-14,-14,-10},
  504.   {-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-24,-24,-24,-24},
  505.   {-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-46},
  506. };
  507.  
  508. static int _psy_noisebias_impulse[11][17]={
  509.   /*63     125     250     500      1k       2k      4k      8k     16k*/
  510.   {-20,-20,-20,-20,-20,-18,-14,-10,-10, -2,  2,  2,  2,  2,  2,  3,  6},
  511.   {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -4, -4, -2, -2, -2, -2,  2},
  512.   {-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -6, -6, -4, -4, -4, -2,  0},
  513.   {-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -6, -6, -4, -4, -4, -2, -2},
  514.   {-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, -6, -4, -2},
  515.  
  516.   {-30,-30,-30,-30,-30,-30,-24,-20,-10,-12,-14,-14,-10, -9, -8, -6, -4},
  517.   {-34,-34,-34,-34,-30,-30,-24,-20,-14,-14,-16,-16,-14,-12,-10,-10, -8},
  518.   {-34,-34,-34,-34,-30,-30,-30,-24,-20,-20,-20,-20,-20,-18,-16,-16,-14},
  519.  
  520.   {-34,-34,-34,-34,-30,-30,-30,-30,-30,-26,-26,-26,-26,-22,-20,-20,-16},
  521.   {-40,-40,-40,-40,-40,-40,-40,-40,-40,-36,-36,-36,-36,-36,-36,-30,-30},
  522.   {-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50},
  523. };
  524.  
  525. static int _psy_noisebias_other[11][17]={
  526.   /*63     125     250     500      1k       2k      4k      8k     16k*/
  527.   {-20,-20,-20,-20,-20,-18,-14,-10, -6, -2,  2,  2,  3,  3,  4,  4, 10},
  528.   {-26,-26,-26,-26,-26,-22,-20,-14,-10, -2, -2, -2,  1,  1,  2,  2,  4},
  529.   {-30,-30,-30,-30,-26,-22,-20,-14,-10, -2, -3, -3, -1, -1,  0,  1,  2},
  530.   {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -3, -3, -1, -1,  0,  1,  2},
  531.   {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -4, -4, -2, -1,  0,  0,  2},
  532.  
  533.   {-30,-30,-30,-30,-30,-30,-24,-20,-10, -4, -6, -6, -3, -2, -2, -2,  0},
  534.   {-34,-34,-34,-34,-30,-30,-24,-20,-14, -8, -8, -8, -7, -7, -6, -6, -4},
  535.   {-34,-34,-34,-34,-30,-30,-24,-20,-14,-14,-16,-16,-14,-12,-10,-10, -8},
  536.  
  537.   {-34,-34,-34,-34,-30,-30,-30,-20,-20,-20,-20,-20,-16,-16,-14,-14,-10},
  538.   {-40,-40,-40,-40,-40,-40,-40,-30,-30,-30,-30,-30,-30,-24,-24,-24,-24},
  539.   {-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-46},
  540. };
  541.  
  542. static int _psy_noiseguards_short[33]={
  543.   2,2,-1,
  544.   4,4,-1,
  545.   4,4,15,
  546.   4,4,15,
  547.   4,4,15,
  548.   4,4,15,
  549.   4,4,15,
  550.   4,4,15,
  551.   4,4,15,
  552.   4,4,15,
  553.   4,4,15,
  554. };
  555. static int _psy_noiseguards_long[33]={
  556.   10,10,100,
  557.   10,10,100,
  558.   10,10,100,
  559.   10,10,100,
  560.   10,10,100,
  561.   10,10,100,
  562.   10,10,100,
  563.   10,10,100,
  564.   10,10,100,
  565.   10,10,100,
  566.   10,10,100,
  567. };
  568.  
  569. static double _psy_tone_masteratt[11]={
  570.   3.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,
  571. };
  572.  
  573. static double _psy_tone_masterguard[11]={
  574.   -18.,-24.,-24.,-24.,-26.,-40.,-40.,-40.,-45.,-45.,-45.,
  575. };
  576.  
  577. static double _psy_tone_suppress[11]={
  578.   -10.,-20.,-20.,-20.,-30.,-30.,-40.,-40.,-45.,-45.,-45.,
  579. };
  580.  
  581. static double _psy_tone_0dB[11]={
  582.   95.,95.,95.,95.,95.,105.,105.,105.,105.,105.,105.,
  583. };
  584.  
  585. static double _psy_noise_suppress[11]={
  586.    -0.,-24.,-24.,-24.,-24.,-30.,-40.,-40.,-45.,-45.,-45.,
  587. };
  588.  
  589. static int _psy_ehmer_bandlimit[11]={
  590.   0,0,0,0,4,4,30,30,30,30,30,
  591. };
  592.  
  593. static vorbis_info_psy _psy_info_template={
  594.     {-1},-110.,-140.,
  595.     /* tonemask att,guard,suppr,curves  peakattp,curvelimitp,peaksettings*/
  596.     0.f,            -40.f,-40.f, {{{0.}}},         1,          0,        {{{0.}}},
  597.     
  598.     /*noisemaskp,supp, low/high window, low/hi guard, minimum */
  599.     1,          -0.f,         .5f, .5f,         0,0,0,
  600.     {-1},{-1},105.f,{{-1,-1,{{-1,-1,-1,-1}}}}
  601. };
  602.  
  603. /* ath ****************/
  604.  
  605. static double _psy_ath_floater[11]={
  606.   -100.,-100.,-100.,-100.,-100.,-100.,-105.,-105.,-105.,-110.,-120.,
  607. };
  608.  
  609. static double _psy_ath_abs[11]={
  610.   -110.,-110.,-120.,-140.,-140.,-140.,-140.,-140.,-140.,-140.,-150.,
  611. };
  612.  
  613. static float ATH_Bark_dB[][27]={
  614.   {
  615.      0.f,  15.f,  15.f,   15.f,   11.f,       10.f,   8.f,  7.f,   7.f,  7.f,
  616.      6.f,   2.f,   0.f,    0.f,   -2.f,       -5.f,  -6.f, -6.f,  -4.f,  4.f,
  617.     14.f,  20.f,  19.f,   17.f,   30.f,       60.f,  70.f,
  618.   },
  619.   {
  620.     0.f,  15.f,  15.f,   15.f,   11.f,       10.f,   8.f,  7.f,   7.f,  7.f,
  621.     6.f,   2.f,   0.f,    0.f,   -2.f,       -5.f,  -6.f, -6.f,  -4.f,  0.f,
  622.     2.f,   6.f,   5.f,    5.f,   15.f,       30.f,  50.f,
  623.   },
  624.   {
  625.     0.f,  15.f,  15.f,   15.f,   11.f,       10.f,   8.f,  7.f,   7.f,  7.f,
  626.     6.f,   2.f,   0.f,    0.f,   -3.f,       -5.f,  -6.f, -6.f, -4.5f, -4.f,
  627.     2.f,   6.f,   5.f,    5.f,   15.f,       20.f,  40.f,
  628.   }
  629. };
  630.  
  631. /* stereo ****************/
  632. static int _psy_stereo_point_dB_44[11]={3,  3,  2,  2,   1,  0,  0,  0,  0,  0,  0};
  633. static double _psy_stereo_point_kHz_44[2][11]={
  634.   {4., 6., 6., 6., 10., 6., 6., 4., 4., 4., 4.},
  635.   {6., 6., 6., 10., 10., 6., 6., 4., 4., 4., 4.}
  636. };
  637.  
  638. /* lowpass **************/
  639. static double _psy_lowpass_44[11]={
  640.   15.1,15.8,16.5,17.9,20.5,48.,999.,999.,999.,999.,999.
  641. };
  642.  
  643. /* management noise offset */
  644.  
  645. static double _bm_max_noise_offset[11]={
  646.   1.,2.,3.,3.,4.,4.,4.,4.,4.,4.,4.
  647. };
  648.